<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="/var/www/html/style.css">
    <title>Document</title>
    <!--CSS渲染部分，通过在Head的style部分进行全部渲染。-->
    <!-- 同时学了Emmet语法，比如输入：p*10-->
    <!--+并列关系 >包含关系 *重复几个-->
    <!--press tab-->
    <!--.class   #id     $*5自增符号-->
    <!--.demo$*5-->
    <!--div{$*5}-->
      
</head>

<body>
    <h1>8.24 学习记录：GAN、RL</h1>
    <div>
        <p id="title">2021-8-25 上午3:59 浙江温州 家中</p>

    </div>
    <hr>
    <p id="summary">先总结一下吧，然后再开始coding。这两天完成的东西不算很多，主要就是在学习，一直在看李宏毅的网课，网课这边每天都要加把劲啊，回武汉之前一定要把网课看完，各个方向的论文至少也得看个一篇吧（GAN的一篇论文、强化学习的一篇论文等等）。然后自己的模型还要加把劲继续train啊，至少要train到可以上线啦。 关于WGAN（其实不是很清楚）
    </p>
    <h3>GAN</h3>
    <p>GAN有一个问题：如果判别器没有训练好，那么生成器也没有办法继续优化，因此判别器和生成器一般情况下都要彼此匹配，也就是能足够的相互进步。</p>
    <p>reference：1511.06434，1606，03498，1809.11096</p>
    <p>对于向量生成：比如一幅图片输入，然后进行encoder变成了一个向量，经过了generator之后生成了一个句子，然后再回来更新。更新完参数后再经过softmax生成句子的结果都相同怎么办？如果不能当然可以用强化学习硬train（？</p>
    <p>监督学习的reference：2007.02798</p>
    <p>还有一个不用pretrain什么随机初始化（不太明白）reference:1905.09922</p>
    <p>其他的生成网络：自编码器（Variational Autoencoder ,Flow-based Model</p>
    <p>接下来是对生成器的判别评价：当然可以用人眼判别，但是代价太昂贵了。同时对于特定的任务也有一些方法.同时还存在Diversity的问题：如果生成器都产生同一类图片怎么办？BIGGAN里的方法是把实时观测生成器每一个epoch生成的图片，然后看到问题就把之前的参数拿来微调。</p>
    <p>求解多样性的分数当然也可以量化，就是来计算所有分布的概率和的平均数。比较相似度：1511.01844</p>
    <p>FID算法：1706.08500</p>
    <p>假设生成的图片和训练集都是高斯分布，就用来计算两个高斯分布的重合率。</p>
    <p>Conditional generation：</p>
    <p>1、text to image: 输入两个，x与z，x是文本信息经过编码后的结果（RNN，transformer），z就是一个随机生成的状态向量。然后放到Generator里输出y，但是这样判别起可能会无视x直接输出一张新的图（问题就在于定义反向传播等问题），所以还是需要改变成supervised learning。 判别器训练的时候需要输入input文本和生成图，然后把这个作为一组输入，然后人工给text和image进行匹配，如果是正确的就给1，不正确的就给0，这样才比较好的训练特征。</p>
    <p>2、image to image:也是pix2pix的问题，可以用来给定一个草图与风格图，然后用来生成上色后的图像。可以用来加滤镜等等（什么鬼鬼，不太懂哦）然后还有sound2image，数据集可以从电影里获得。还有多图生成：GIF图片。reference：1905.08233</p>
    <p>
        <img src="/var/www/picture/哆啦A梦机器猫 (129).jpg" hidden="hidden">
    </p>
    <p>最后 一个大方向：从未经打包的数据学习（learning from Unpaired data）主要可以应用于图像风格转换 主要就是输入x和输出y是不成对的，也就是Unlabel的数据。
    </p>
    <p>
        现在的方法主要有Cycle GAN：图像输入后经过生成器生成输出的图像，再训练一个生成器由输出的图像生成回输入的图像，然后输出的图像再经由另一个网络输出判断image是不是在domain y里的。
    </p>
    <p>风格转换的reference：Disco GAN:1703.05192,DualGAN:1704.02510,Star GAN:1711.09020 Seq2Seq的问题也可以用GAN来做：比如可以把负面的句子转换成正面的句子，reference如下：
    </p>

    <li>无监督概要写作：1810.02851</li>
    <li>无监督翻译：1710.04087,1710.11041</li>
    <li>无监督语音转文本：1804.00316,1812.09323,1904.04100</li>
    <h4>接下来是RL——reinforcement learning:</h4>
    <p>网络主要是这样：首先由一个actor，观测环境，得到状态S，然后做出行为A，得到奖赏R，然后环境收到行为A之后改变了状态，然后如此反复。</p>
    <p>然后观测环境可以用什么呢？如果玩游戏的话，是图片，可以用CNN，当然多数情况下都是获得游戏的一些状况相关参数。</p>
    <p>如何定义损失呢？就是对所有的奖赏求和，RL的目标就是最大化奖赏，那么loss就是奖赏的相反数。 那么如何优化呢：首先是输入，输入就是所有的状态-行为，然后输出是奖赏，找到一个network使奖赏最大即可。但是问题在于这个Actor（无论是环境还是什么都是有随机性的，这就是非一般的优化问题）
    </p>
    <li>Policy Gradient</li>
    <p>讲到网络的细节，就是状态输入Actor（一个网络）然后经过全连接层之后再softmax输出一系列概率，这些概率就是选取每一个动作的概率，然后梯度下降的一种方式就是你自己先看你希望网络面对这个环境的时候做什么动作，然后给出标签，然后求交叉熵e就是了。如果想做这件事，L=e，不想做这件事，L=-e. 所以给数据集做标签的时候，{S1,a1}你可以给他label一个数，这个数代表你多希望它去做。
    </p>

    <h4>接下来就是网络的架构啦</h4>
    <p>Version0就是评价每一个Action的奖赏值，然后选择最大的。这样的问题就是网络会牺牲短期利益，因为接下来每个行为都是会影响未来的发展的，这是一个非独立的事件，也是所谓（贪心并非全局最优）</p>
    <p>Version1就是求G，G就是选择了这个动作之后以后所有的奖赏值以一定比例相乘然后求和</p>

</body>

</html>